package com.liruo.springframework.core.aop.aopcontext;

import com.liruo.springframework.core.aop.ABean;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.aop.framework.AopContext;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;

@Slf4j
@Component
public class GetCurrentProxyTarget {
  @Resource
  ABean aBean;

  public void proxyMethod(String targetTip){
    log.info("targetTip: {}, this={}", targetTip, this);
  }

  public void noProxyMethod(){
    GetCurrentProxyTarget target = this;
    GetCurrentProxyTarget proxyTarget = (GetCurrentProxyTarget)AopContext.currentProxy();
    target.proxyMethod("target"+"["+target+"]");
    Assert.isTrue(!NoProxyMethodCallProxyMethodAspect.INVOKE, "");
    proxyTarget.proxyMethod("proxyTarget["+proxyTarget+"]");
    Assert.isTrue(NoProxyMethodCallProxyMethodAspect.INVOKE, "");
  }
}
